/**
 * 事件处理相关代码
 */


// 页面加载
// 根据数据生成select-option
$(function() {
    var category = "";
    for (var i = 0; i < freqData.length; i++) {
        category = freqData[i].category;
        $('#hotmap-select').append('<option>' + category + '</option>');
    }
});


// 加载案情和清除案情按钮操作
$('#btn-eventctl').click(function(event) {
    var series = null;
    if ($(this).hasClass('btn-load')) {
        // 修改按钮
        $(this)[0].src = 'img/event_load.png';
        $(this).addClass('btn-clear').removeClass('btn-load');
        // 更新数据
        myChart.showLoading();
        // var tmpSeries = myChart.getOption().series;
        // convertEventData2Series(eventData, tmpSeries);

        myChart.setOption({
            // 加载全部案件数据
            // series: tmpSeries
        });
        myChart.hideLoading();
    } else {
        // 修改按钮
        // $(this).text('加载案情数据');
        $(this)[0].src = 'img/event_clear.png';
        $(this).addClass('btn-load').removeClass('btn-clear');
        // 保存数据
        series = myChart.getOption().series;
        // 更新数据
        myChart.showLoading();
        var tmpSeries = myChart.getOption().series;
        for (var i = 0; i < eventData.length; i++) {
            var tmp = tmpSeries.pop();
            if (tmp.type === 'scatter' && tmp.id !== 'carPosition') {
                myChart.setOption({
                    series: {
                        id: tmp.id,
                        data: []
                    }
                });
            }
        }
        myChart.hideLoading();
    }
});


// 加载位置与清除位置按钮操作
$('#btn-positionctl').click(function(event) {
    if ($(this).hasClass('btn-load')) {
        // 修改按钮
        // $(this).text('清除警车数据');
        $(this)[0].src = 'img/position_load.png';
        $(this).addClass('btn-clear').removeClass('btn-load');
        // 向后端发起异步请求
        $.ajax({
            type: "get",
            cache: true,
            async: true,
            url: "./pc",
            // url: "data/mockData.json",
            success: function(res) {
                policeCarData = $.parseJSON(res);
                // policeCarData = res;
                // console.log(res);
                // 更新数据
                myChart.showLoading();
                myChart.setOption({
                    series: [{
                        id: 'carPosition',
                        data: convertPoliceCarJsonData(policeCarData)
                    }]
                });
                myChart.hideLoading();
            }
        });
    } else {
        // 修改按钮
        // $(this).text('加载警车数据');
        $(this)[0].src = 'img/position_clear.png';
        $(this).addClass('btn-load').removeClass('btn-clear');
        // 更新数据
        myChart.showLoading();
        myChart.setOption({
            series: [{
                id: 'carPosition',
                data: []
            }]
        });
        myChart.hideLoading();
    }
});


// 加载路线和清除路线按钮操作
$('#btn-linectl').click(function(event) {
    if ($(this).hasClass('btn-load')) {
        // 修改按钮
        // $(this).text('清除路线数据');
        $(this)[0].src = 'img/line_load.png';
        $(this).addClass('btn-clear').removeClass('btn-load');
        // 更新数据
        myChart.showLoading();
        myChart.setOption({
            series: [{
                id: 'policeCarLine',
                data: []
            }, {
                id: 'policeCarEffect',
                data: linesData
            }]
        });
        myChart.hideLoading();
    } else {
        // 修改按钮
        // $(this).text('加载路线数据');
        $(this)[0].src = 'img/line_clear.png';
        $(this).addClass('btn-load').removeClass('btn-clear');
        // 更新数据
        myChart.showLoading();
        myChart.setOption({
            series: [{
                id: 'policeCarLine',
                data: []
            }, {
                id: 'policeCarEffect',
                data: []
            }]
        });
        myChart.hideLoading();
    }
});


// select表单改变事件：改变热力图类型
$('#hotmap-select').change(function() {
    var category = $('#hotmap-select option:selected').text();
    // 后期改为二分查找
    if (category === "关闭") {
        myChart.showLoading();
        myChart.setOption({
            series: {
                id: 'freqHeatmap',
                data: []
            },

            visualMap: {
                id: 'visualMapHeat',
                show: false
            }
        });
        myChart.hideLoading();
    } else {
        for (var i = freqData.length - 1; i >= 0; i--) {
            if (freqData[i].category === category) {
                myChart.showLoading();
                myChart.setOption({
                    series: {
                        id: 'freqHeatmap',
                        data: convertFreqData(freqData[i].freq)
                    },

                    visualMap: {
                        id: 'visualMapHeat',
                        show: true
                    }
                });
                myChart.hideLoading();
            }
        }
    }

});



/**
 * [renderBrushed 区域选择事件回调函数]
 * @param  {对象数组} params [全局对象，打开调试查看]
 */
function renderBrushed(params) {
    var mainSeries = params.batch[0].selected;
    console.log(mainSeries);
    var selectedItems = [];
    var hotEvent = [];
    var barData = [];
    var maxBar = 30;

    // console.log(mainSeries);
    // 添加选中的案情信息
    for (var index = 5; index < mainSeries.length; index++) {
        for (var i = 0; i < mainSeries[index].dataIndex.length; i++) {
            var rawIndex = mainSeries[index].dataIndex[i];
            // console.log(rawIndex);
            var dataItem = eventData[index - 5].eventList[rawIndex];
            selectedItems.push(dataItem);
        }
    }

    // 按案情时间排序
    selectedItems.sort(function(a, b) {
        return time2value(a.value[2]) - time2value(b.value[2]);
    });

    for (var i = 0; i < Math.min(selectedItems.length, maxBar); i++) {
        // console.log(selectedItems[i]);
        if (selectedItems[i]) {
            if (selectedItems[i].name != undefined) {
                hotEvent.push(selectedItems[i].name);
            }
            if (selectedItems[i].value != undefined) {
                barData.push(time2value(selectedItems[i].value[2]));
            }
        }


    }

    this.setOption({
        backgroundColor: 'rgba(0,0,0,0.5)',
        show: true,
        yAxis: {
            data: hotEvent
        },
        series: {
            id: 'selectBar',
            data: barData,
        }
    });

    // 禁用百度地图拖拽
    bmap.disableDragging();
    setTimeout(function() {
        bmap.enableDragging(); //1s后开启拖拽
    }, 2000);
}

// 区域选择事件
myChart.on('brushselected', renderBrushed);


// 视觉映射组件事件：阻止地图拖拽
myChart.on('datarangeselected', function() {
    // 禁用百度地图拖拽
    bmap.disableDragging();
    setTimeout(function() {
        bmap.enableDragging(); //1s后开启拖拽
    }, 2000);
});
